电池装配功能包interface接口定义

修订日期 修订版本 修订内容 修订人
2023.12.18 V0.1 初始化文档 张弛

[TOC]

一、电池装配功能实现过程总述

​ 上述流程忽略接近阶段以及结束阶段。

二、功能包设计原则

1、按功能抽象出规划功能包及控制功能包,每个阶段均由一个规划功能包,一个控制功能包(若该阶段不涉及规划或控制则无)。

2、规划/控制功能包,均有一个使能函数,一个获取/计算函数。

3、结束阶段的判断耦合在插入阶段

三、功能包设计详细阐述

1、规划功能包

  • 规划器初始化设置接口

    /**
        * @brief 规划器初始化功能包
        * @param robot: 机器人指针
        * @param type: 曲线类型,具体含义参见TrajTpye
        * @param trajMsg: 轨迹参数, 具体含义参见AssembleTrajMsg
        * @param track: 轨迹路径点,第一个点为起始点,最后一点为终止点
        * @return: 返回值 < 0 表示规划失败
       */
    int FPAssembleTrajPlan(const ARAL::interface::ARALIntfacePtr& robot, const TrajTpye& type, const TrajMsg& trajMsg, const std::vector<interface::Array6d>& track);
    
  • 获取规划器结果接口

    /**
        * @brief 获取规划器路径信息
        * @param robot: 机器人指针
        * @return: 周期返回轨迹规划PVA
       */
    RefPVA FPgetTrajPoint(const ARAL::interface::ARALIntfacePtr& robot);
    
  • 相关结构体定义

    enum class TrajTpye : int
    {
        joint = 0,                              // 关节空间
    
        //笛卡尔空间
        straight = 10,                          // 直线轨迹
        sine = 11,                              // 正弦摆线
        trapezoid = 12,                         // 梯形摆线
        planarspiral = 13,                      // 平面螺旋
        spatialspiral = 14,                     // 空间螺旋
    
    };
    
    struct TrajMsg
    {
        interface::CurveType curve;                           // 曲线属性
        interface::DescribeSpace space = interface::DescribeSpace::CARTESIAN;   // 运动空间
        interface::MoveMode mode = interface::MoveMode::POSITION;               // 规划模式
        std::vector<double> move_times{.0};                   // 运动时间
        std::vector<double> max_vel;                          // 最大速度
        std::vector<double> max_acc;                          // 最大加速度
        std::vector<double> max_jerk;                         // 最大加加速度
    };
    
    struct RefTrajPVA
    {
        interface::RLJntArray q_ref;            // 参考位置
        interface::RLJntArray qd_ref;           // 参考速度
        interface::RLJntArray qdd_ref;          // 参考加速度
    };// 规划轨迹输出
    

2、控制功能包

  • 控制功能使能接口

    /**
        * @brief 装配功能控制器使能
        * @param robot: 机器人指针
        * @param params: 控制器参数,具体含义
        * @return: 返回值 < 0,表示设置失败
       */
    int FPAssembleEnable(const ARAL::interface::ARALIntfacePtr& robot, AssembleStatus& status, const FCcontrollerParam& params);
    
  • 控制功能输出接口

    /**
     * @brief 装配功能控制输出
     * @param robot_model: 机器人指针
     * @param ta: 装配功能周期输入参数,具体含义见ToolAssembly
     * @param cmd_res: 控制器
     * @param overflag: 阶段结束标志,返回true则进入下一阶段
     * @param contactflag: 接触标志, 返回true表示工具接触(详细用法见装配功能包说明文档)
     * @param pos: 接触点位姿或者回退点位姿,取决于阶段
     * @return: 返回值 < 0 表示计算失败
       */
       int FDAssembleCMDout(const ARAL::interface::ARALIntfacePtr& robot, const AssemblyStateParams& as, AssemblyCraftParams& ac, interface::RLJntArray& cmd_res,bool& overflag, bool& contactflag, interface::RLJntArray& pos);
    

    说明:在定位阶段,确定螺钉位置过程中返回最终定位点的姿态,完整的回退路径不在Aral_interface中提供

  • 相关结构体定义

    struct FCcontrollerParam
    {
        interface::DescribeSpace space
                                 = interface::DescribeSpace::CARTESIAN;     // 控制器空间
        std::vector<int>      fc_enable = {1, 1, 1, 1, 1, 1};               // 笛卡尔空间/关节空间力控开关
        interface::RLJntArray goal_force = {0.0};                           // 目标力
        interface::RLJntArray M;                                            // 质量
        interface::RLJntArray D;                                            // 阻尼
        interface::RLJntArray K;                                            // 刚度
        std::vector<double>   force_limit
                              = {120.0, 120.0, 120.0, 60.0, 60.0, 60.0};    // 控制器输入力限制值
        std::vector<double>   force_threshold
                              = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};             // 控制器输入力阈值
    };// 力控参数结构体
    
    struct AssemblyStateParams
    {
        RobotState state;                                     // 机械臂状态
        interface::RLPose task_Frame;                         // 控制坐标系相对于基坐标系的位姿
        std::vector<double>   ref_q, ref_qd, ref_qdd;         // 参考路径点关节空间位置 速度 加速度
    }; // 电池装配功能包实时参数结构体
    
    struct AssemblyCraftParams
    {
        AssembleStatus status;                                // 装配阶段类别
        double HoleDepth;                                    // 孔深(插孔阶段必须设置)
    }; // 电池装配功能包工艺参数结构体(逐渐扩充)
    
    struct RobotState
    {
        interface::RLJntArray q;               // 关节位置
        interface::RLJntArray qd;              // 关节速度
        interface::RLJntArray qdd;               // 关节加速度
        interface::RLJntArray torq;            // 关节实际力矩,单位Nm
        interface::RLJntArray temp;            // 关节温度,单位为摄氏度(℃)
        interface::RLJntArray friction;        // 关节摩擦力,单位Nm
        interface::RLWrench   sensor;          // 传感器在每个维度方向的测量数据(减去偏置)
        bool has_sensor = false;               // 是否存在力传感器,默认为否
    
    }; // 机器人状态结构体
    
    enum class AssembleStatus : int
    {
        locate_z = 1,                           // Z轴定位
        local_insert_detect = 2,                // 检测轴孔装配状态
        locate_xy = 3,                          // 螺栓定位
        locate_move = 4,                        // 移动至定位点
        search_z = 5,                           // Z轴探寻
        search_insert_detect = 6,               // 检测轴孔装配状态
        searc_xy = 7,                           // XY平面搜索
        insert = 8,                             // 轴/孔插入
    };
    

四、程序执行流

以上为主流程的程序执行概述,具体程序执行顺序参考第一章流程图

1、加速度约束,笛卡尔空间如何去约束(规划器参数约束)

2、getTrajPoint需要细化处理

results matching ""

    No results matching ""